﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Cotizav.LogicaNegocio
{
    public class TipoMarcaBLL
    {
        public List<Entidades.Tipo_Marca> Listar()
        {
            AccesoDatos.Tipo_MarcaDAO tipoMarcaDAO = new AccesoDatos.Tipo_MarcaDAO();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                return tipoMarcaDAO.Listar(ctx);
            }
        }

        public int Asociar(Entidades.Marca selMarca, List<Entidades.Tipo> listTipo)
        {
            AccesoDatos.Tipo_MarcaDAO tipoMarcaDAO = new AccesoDatos.Tipo_MarcaDAO();
            int resultado = 0;

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                ctx.LoadTransaction();

                foreach (Entidades.Tipo t in listTipo)
                {
                    Entidades.Tipo_Marca newTipo_Marca =
                        new Entidades.Tipo_Marca()
                        {
                            IdTipo = t.IdTipo,
                            IdMarca = selMarca.IdMarca,
                            Activo = selMarca.Activo,
                            FechaRegistro = DateTime.Now
                        };

                    resultado += tipoMarcaDAO.Registrar(ctx, newTipo_Marca);
                }

                ctx.ConfirmarTx();
            }

            return resultado;
        }

        public List<Entidades.Tipo> RevisarDuplicados(Entidades.Marca marca, List<Entidades.Tipo> list)
        {
            AccesoDatos.Tipo_MarcaDAO tipoMarcaDAO = new AccesoDatos.Tipo_MarcaDAO();
            List<Entidades.Tipo> result = new List<Entidades.Tipo>();

            using (Util.ContextoDB ctx = Util.ContextoDB.GetContexto())
            {
                List<Entidades.Tipo_Marca> lista = tipoMarcaDAO.Listar(ctx).Where(x => x.IdMarca == marca.IdMarca && x.Activo == 1).ToList();

                foreach (Entidades.Tipo t in list)
                {
                    foreach (Entidades.Tipo_Marca tm in lista)
                    {
                        if (t.IdTipo == tm.IdTipo)
                        {
                            result.Add(t);
                        }
                    }
                }
            }

            return result;
        }
    }
}
